package com.deer.wms.base.system.dao;

import com.deer.wms.base.system.model.Item.ItemType;
import com.deer.wms.base.system.model.Item.ItemTypeCriteria;
import com.deer.wms.base.system.model.Item.ItemTypeDto;
import com.deer.wms.project.root.mapper.SuperMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author guo
 */
public interface ItemTypeMapper extends SuperMapper<ItemType> {

    /**
     * 通过物料种类编码删除
     * @param itemTypeCode 物料种类编码
     */
    void deleteByCode(@Param("itemTypeCode") String itemTypeCode);

    /**
     * 根据物料种类ID删除
     * @param itemTypeId id
     */
    void deleteByIdAndLowLevel(Integer itemTypeId);

    /**
     * 按照条件criteria查询
     * @param criteria criteria
     * @return List<ItemTypeDto>
     */
    List<ItemTypeDto> findList(ItemTypeCriteria criteria);

    /**
     * 根据编码查询
     * @param itemTypeCode 物料种类编码
     * @return List<ItemType>
     */
    List<ItemType> findByCode(@Param("itemTypeCode")String itemTypeCode);

    /**
     * 根据名称查询
     * @param itemTypeName 物料种类名称
     * @return List<ItemType>
     */
    List<ItemType> findByName(@Param("itemTypeName") String itemTypeName);

    /**
     * 根据物料编码查询
     * @param itemCode 物料编码
     * @return List<ItemType>
     */
    List<ItemType> findByItemCode(@Param("itemCode") String itemCode);

    /**
     * 查询父级物料种类
     * @param itemType 物料种类实体
     * @return List<ItemTypeDto>
     */
    List<ItemTypeDto> findParentList(ItemType itemType);
}